Demand estimations of resource-consuming clients, such as virtual machines (VMs), are critical for resource management in a distributed computer system. For example, VM demand estimations are used to make load-balancing decisions and to compute resource entitlements for VMs running in a distributed computer system. VM demand estimations are also used to allocate resources, such as CPU and memory resources, to VMs running as part of a virtual datacenter.
For applications that are supported by VMs, the demand estimations of these VMs may affect their performance and the overall resources required for the VMs. If the VM demand estimations are too low, then the applications may experience increased latencies during operation due to lack of sufficient resources allocated to the VMs that were based on the low VM demand estimations. If the VM demand estimations are too high, then the VMs may be allocated with much more resources than needed based on the high VM demand estimations, which increases the cost associated with running the VMs. Thus, there is a need to properly estimate VM demands that are running applications to efficiently balance application performances and VM resource requirements.